;;
*)
- echo 'Unknown command: ' $1
- echo 'Valid commands are: bind, unbind'
+ echo 'Unknown command: ' $1 >&2
+ echo 'Valid commands are: bind, unbind' >&2
exit 1
esac
;;
*)
- echo 'Unknown command: ' $1
- echo 'Valid commands are: bind, unbind'
+ echo 'Unknown command: ' $1 >&2
+ echo 'Valid commands are: bind, unbind' >&2
exit 1
esac
netdev=${netdev:-eth0}
antispoof=${antispoof:-yes}
-echo "network $OP bridge=$bridge netdev=$netdev antispoof=$antispoof"
+echo "*network $OP bridge=$bridge netdev=$netdev antispoof=$antispoof" >&2
# Usage: transfer_addrs src dst
# Copy all IP addresses (including aliases) from device $src to device $dst.
;;
*)
- echo 'Unknown command: ' ${OP}
- echo 'Valid commands are: start, stop, status'
+ echo 'Unknown command: ' ${OP} >&2
+ echo 'Valid commands are: start, stop, status' >&2
exit 1
esac
# antispoofing not yet implemented
antispoof=${antispoof:-no}
-echo "network-nat $OP netdev=$netdev antispoof=$antispoof"
+echo "*network-nat $OP netdev=$netdev antispoof=$antispoof" >&2
op_start() {
;;
*)
- echo 'Unknown command: ' ${OP}
- echo 'Valid commands are: start, stop, status'
+ echo 'Unknown command: ' ${OP} >&2
+ echo 'Valid commands are: start, stop, status' >&2
exit 1
esac
# Exit if anything goes wrong
set -e
-echo "vif-bridge $*"
+echo "*vif-bridge $*" >&2
# Operation name.
OP=$1
iptcmd='-D'
;;
*)
- echo 'Invalid command: ' $OP
- echo 'Valid commands are: up, down'
+ echo 'Invalid command: ' $OP >&2
+ echo 'Valid commands are: up, down' >&2
exit 1
;;
esac
# Exit if anything goes wrong
set -e
-echo "vif-nat $*"
+echo "*vif-nat $*" >&2
# Operation name.
OP=$1
ipcmd='d'
;;
*)
- echo 'Invalid command: ' $OP
- echo 'Valid commands are: up, down'
+ echo 'Invalid command: ' $OP >&2
+ echo 'Valid commands are: up, down' >&2
exit 1
;;
esac
# Exit if anything goes wrong
set -e
-echo "vif-route $*"
+echo "*vif-route $*" >&2
# Operation name.
OP=$1
ipcmd='d'
;;
*)
- echo 'Invalid command: ' $OP
- echo 'Valid commands are: up, down'
+ echo 'Invalid command: ' $OP >&2
+ echo 'Valid commands are: up, down' >&2
exit 1
;;
esac
import popen2
import select
+import string
from xen.xend.XendLogging import log
-def system(cmd):
+def runscript(cmd):
# split after first space, then grab last component of path
cmdname = "[%s] " % cmd.split()[0].split('/')[-1]
# run command and grab stdin, stdout and stderr
p = select.poll()
p.register(cout)
p.register(cerr)
+ stdout = ""
while True:
r = p.poll()
for (fd, event) in r:
if event == select.POLLHUP:
- return
+ return stdout
if fd == cout.fileno():
- l = cout.readline()
- log.info(cmdname + l.rstrip())
+ stdout = stdout + cout.readline()
if fd == cerr.fileno():
l = cerr.readline()
- log.error(cmdname + l.rstrip())
+ if l[0] == '-':
+ log.debug(cmdname + l[1:].rstrip())
+ elif l[0] == '*':
+ log.info(cmdname + l[1:].rstrip())
+ else:
+ log.error(cmdname + l.rstrip())
import os.path
import sys
import string
+import xen.util.process
from xen.xend import XendRoot
script = os.path.join(SCRIPT_DIR, script)
args = [op] + string.split(dets, ':')
args = ' '.join(args)
- out = os.popen(script + ' ' + args)
-
- output = _readline(out)
- out.close()
- return string.rstrip(output)
+ ret = xen.util.process.runscript(script + ' ' + args)
+ if len(ret):
+ return ret.splitlines()[0]
else:
args.append("antispoof=no")
args = ' '.join(args)
- xen.util.process.system(script + ' ' + args)
+ ret = xen.util.process.runscript(script + ' ' + args)
+ if len(ret):
+ return ret.splitlines()[0]
def set_vif_name(vif_old, vif_new):
if vif_old == vif_new:
ips = ' '.join(ipaddr)
args.append("ip='%s'" % ips)
args = ' '.join(args)
- os.system(script + ' ' + args)
-
+ ret = xen.util.process.runscript(script + ' ' + args)
+ if len(ret):
+ return ret.splitlines()[0]